python 01列表异或

您所在的位置:网站首页 python 列表异或 python 01列表异或

python 01列表异或

2023-09-29 21:45| 来源: 网络整理| 查看: 265

算术运算、比较运算、赋值运算、位和位运算、运算优先级

python里的算术运算

我们最熟悉的计算就是算术运算,加减乘除等。在python的算术运算中,除了四则运算外,还有幂运算、取模、取整运算。

什么是取模、取整运算呢?取模和取整运算和除法相关。取模即取除法的余数,取整即取除法的商。

11%7

取模运算,结果为:4

11//7

取整运算,结果为:1

如果是负数取模取整,会是怎样的结果呢?

i1=-11%7i2=-11%-7i3=-11//7i4=-11//-7print(i1,i2,i3,i4)

结果是:3 -4 -2 1

下面有一个混合运算,猜心算一下运行结果会是怎样的呢?

4*2**3//6+2%7-2

很显然,这里就牵涉到不同运算之间的优先级。

算术运算里,优先级从高到低是:幂运算、乘除取模取整、加减

4*2**3//6+2%7-2

运行结果:5 和你心算的结果是不是一样呢?

python里的比较运算

所谓的比较运算就是等于(==)、不等于(!=)、大于(>)、大于等于(>=)、小于(

9!=10

运行结果:True

9!=9

运行结果:False

python里的赋值运算

在程序里,赋值也是一种运算。赋值的符号“=”,以后我们还会碰到诸如:“+=”、“-=”……等赋值运算。

来看一个范例:

i=5+4==6-1 print(i)

运行结果为:False

这个混合运算里有算术运算、比较运算和赋值运算,这些运算的优先级,从高到低依次是:算术运算、比较运算、赋值运算。

i=5+4==6-1

i=9==5 (9不等于5,所以此比较运算结果为False)

i=False

python里的位运算

什么是“位”?

“位”是数据存储的最小单位。在计算机中二进制数系统中,每个0或1就是一个“位”,英文写作bit,简记为b,称为比特。“位”就如同下图中的格子,每一个格子就是一个“位”,而每一个“位”存储的数据只有两种可能,要么是“0”,要么是“1”。我们将8个“位”称为一个“字节”,英文是Byte。“位”和“字节”的转换公式是:8b=1B。字节大小的转换关系是这样的:1024B=1KB,1024KB=1MB,1024MB=1GB,1024GB=1TB……

2fedaef2766a958f33739d40f024bd88.png

对于“位”有一些了解了。下面我们再来复习一下二进制。

和满10进一位的十进制不同,二进制是满2就要进一位的一种进制,二进制只有两个数值:0和1。如果你初次接触二进制,建议你不妨先做一个将十进制的0-10转换成二进制的练习。最容易犯错的地方是十进制的4和8。下图是十进制0-10对应的二进制,看看你转换对了没有。

0aefed2f89085a78a9148733255379c8.png

有了“位”的理解和二进制的知识,我们就来探究一下基于二进制的位运算。

—— “&” 按位 与 的运算 ——

按位与的运算规则是:

0 & 0 = 0

0 & 1 = 0

1 & 0 = 0

1 & 1 = 1

或许这个规则不太好理解,我借用电路来说明一下。

开关开就是“1”,关就是“0”;灯亮是“1”,灯灭是“0”。

2543f2c9ff4ff6a65040f54afebf3db6.png

尝试用python代码来实现一下:8&6

python的位运算也是先将十进制数值化为二进制后再进行的运算。

print(8&6)

运算结果是:0

我们再来人工列式演算一下,一来校验结果,二来清晰地理解按位与的运算过程:

423cd1b28ffcf982bca6415e1a875db4.png

计算一下“10&6”呢?我们先人工列式演算一下:

ca6a350884d86b7d396c303fc6771cb0.png

python代码来运行:

print(10&6)

运行的结果果真是:2

—— “ | ” 按位 或 的运算 ——

按位或的运算规则是:

0 | 0 = 0

0 | 1 = 1

1 | 0 = 1 

1 | 1 = 1

为了方便大家理解,我也同样借用电路来说明“按位或”的运算规则。

开关开就是“1”,关就是“0”;灯亮是“1”,灯灭是“0”。

06ab56843db64f4bcb3238076edc7216.png

我想算算“8|6”,用python代码来运算。

print(8|6) 运行结果是:14 我再来用python算一算“10|6” print(10|6)

运行结果还是:14   嗯?怎么是一样的答案?

好吧,我们来人工列式演算一下,一来校验结果,二来清晰地理解按位或的运算过程:

0c9668ae50bfb6c2db7f844711136226.png

 —— “ ^ ” 按位 异或 的运算 ——

什么是“异或”?“异或”和“或”有什么不同呢?

我们用维恩图来做个说明:

fa70eee5e7ec8d3c6c947751d7a6b7d0.png

“异或”和“或”在运算上有怎样的不同呢?我列表做了一个对比。

0697410160249b1499a513e0a3202174.png

两个计算的不同之处,我用黄色框凸显出来。

我们现在用python编码来算算“8^6”

print(8^6)

运行结果是:14 和“按位或”的计算结果一样,那么,“10^6”的计算结果也还是14吗?

print(10^6) 运行结果是:12

为什么“10^6”和“8^6”“按位或”的计算结果是一样的,但是“按位异或”的计算结果却不一样呢?

我们用人工列式演算一下,你是否看出其中的差别呢?

07690d23c8ea0459f23e1431b03c76c9.png

位运算还有“按位取反运算”、“左移动运算”和“右移动运算”,以后再慢慢学习。

此文原发表于知乎网站。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3